From 729577228a17d512bbb95b34452aa0f65c5004f4 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Tue, 21 Oct 2008 09:48:08 +0100 Subject: [PATCH] Add protection for xenpm access power management info Signed-off-by: Liu Jinsong --- xen/drivers/acpi/pmstat.c | 4 ++-- xen/drivers/cpufreq/utility.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c index b3ba34c378..42051d2070 100644 --- a/xen/drivers/acpi/pmstat.c +++ b/xen/drivers/acpi/pmstat.c @@ -52,7 +52,7 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op) int ret = 0; const struct processor_pminfo *pmpt; - if ( (op->cpuid >= NR_CPUS) || !cpu_online(op->cpuid) ) + if ( !op || (op->cpuid >= NR_CPUS) || !cpu_online(op->cpuid) ) return -EINVAL; pmpt = processor_pminfo[op->cpuid]; @@ -87,7 +87,7 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op) uint64_t tmp_idle_ns; struct pm_px *pxpt = cpufreq_statistic_data[op->cpuid]; - if ( !pxpt ) + if ( !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt ) return -ENODATA; total_idle_ns = get_cpu_idle_time(op->cpuid); diff --git a/xen/drivers/cpufreq/utility.c b/xen/drivers/cpufreq/utility.c index a26e2518c3..b9330c1de2 100644 --- a/xen/drivers/cpufreq/utility.c +++ b/xen/drivers/cpufreq/utility.c @@ -129,7 +129,7 @@ void cpufreq_statistic_reset(unsigned int cpuid) struct pm_px *pxpt = cpufreq_statistic_data[cpuid]; const struct processor_pminfo *pmpt = processor_pminfo[cpuid]; - if ( !pxpt || !pmpt ) + if ( !pmpt || !pxpt || !pxpt->u.pt || !pxpt->u.trans_pt ) return; count = pmpt->perf.state_count; -- 2.30.2